--- %%NOBANNER%% -->
![]() | ![]() |
/*-------------------<-- Start of Description-->---------------------\ | Create a table in the opened word document; | |---------------------<-- End of Description-->----------------------| |--------------------------------------------------------------------| |------------<-- Start of Files or Arguments Needed-->---------------| | 4 arguments are needed: | | bmark: is the name of bookmark you want to create your table | | ncols: is the number of columns you want to create your table | | width: the width of the entire table; | | col1width: the width of the 1st column; | | title: T or F. | | If T, then create two rows, the first row has only one | | big cell for the title; | | if F, then create only one row, with number of columens as| | user specified. | | wordref: word reference; not necessary default is "wordsys"; | |-------------<-- End of Files or Arguments Needed-->----------------| |--------------------------------------------------------------------| |------------------<-- Start of Files Created-->---------------------| | Example: %dtable(bmark='t1', ncols=4, width=6.5); | | Usage: %dtable(bmark=,ncols=2,width=6,col1width=.,title=F, | | wordref=wordsys); | \-------------------<-- End of Files Created-->---------------------*/ %macro dtable(bmark=,ncols=2,width=6,col1width=.,title=F,wordref=wordsys) ; /*--------------------------------------------\ | Author: Duo Zhou; | | Created: 2-27-2001 11:14pm; | | Modified: 12-25-2001 2:11pm; | | Purpose: Create an empty table in the word | | document; | \--------------------------------------------*/ %let bookmark=%qscan(&bmark,1,%str(,()''"")); %let clwth=%sysevalf(&width/&ncols); %if (&col1width eq) or (&col1width = .) %then %do; %do _i_=1 %to &ncols; %let var&_i_=%sysevalf(&width/&ncols); %end; %end; %else %do; %let hwidth=%sysevalf(&width-&col1width); %let var1=&col1width; %do _i_=2 %to &ncols; %let var&_i_=%sysevalf(&hwidth/%sysevalf(&ncols-1)); %end; %end; %if (%quote(%upcase(&title))=F) %then %do; data _null_; file &wordref lrecl=2000; length str $2000.; /*The table has 4 columns, 2 rows. Here I use format 16: single border table; .Format="28", .Format="31", .Format = "18", is all the options */; put '[ViewNormal]'; put '[InsertPara]'; str='[TableInsertTable .ConvertFrom = "", .NumColumns = "'||trim(left(put(&ncols, 3.0)))||'", .NumRows = "1", .InitialColWidth = "'||trim(left(put(&clwth, 4.2)))||'" + Chr$(34), .Format = "16", .Apply = "167"]'; put str; /*Set the first column to 2.8, space between columns to be 0.05*/ str='[TableColumnWidth .ColumnWidth = "'||trim(left(put(&var1, 4.2)))||' " + Chr$(34), .SpaceBetweenCols = "0.05" + Chr$(34), .RulerStyle = "0"]'; put str; /*Move the cursor right one cell*/ %do _i_=2 %to &ncols; put '[CharRight 1]'; /*Push 'shift + right arrow' select the second and the third column*/ /*Set the first column to 1.18, space between columns to be 0.05*/ str='[TableColumnWidth .ColumnWidth = "'||trim(left(put(&&var&_i_, 4.2)))||'" + Chr$(34), .SpaceBetweenCols = "0.05" + Chr$(34), .RulerStyle = "0"]'; put str; %end; put '[StartOfRow]'; put '[StartOfColumn]'; %if &bookmark ne %then %do; put '[Tableselecttable]'; /*Create a bookmark*/ str='[EditBookmark .Name = "'||trim(left("&bookmark"))||'", .SortBy = 0, .Add]'; put str; %end; run; %end; %else %do; data _null_; file &wordref lrecl=2000; length str $2000.; /*The table has 4 columns, 2 rows. Here I use format 16: single border table; .Format="28", .Format="31", .Format = "18", is all the options */; put '[ViewNormal]'; put '[InsertPara]'; str='[TableInsertTable .ConvertFrom = "", .NumColumns = "'||trim(left(put(&ncols, 3.0)))||'", .NumRows = "2", .InitialColWidth = "'||trim(left(put(&clwth, 4.2)))||'" + Chr$(34), .Format = "16", .Apply = "167"]'; put str; /*Push 'shift + down arrow' select the first column*/ put '[LineDown 1, 1]'; /*Set the first column to 2.8, space between columns to be 0.05*/ str='[TableColumnWidth .ColumnWidth = "'||trim(left(put(&var1, 4.2)))||' " + Chr$(34), .SpaceBetweenCols = "0.05" + Chr$(34), .RulerStyle = "0"]'; put str; /*Move the cursor right one cell*/ %do _i_=2 %to &ncols; put '[CharRight 1]'; /*Push 'shift + down arrow' select the first column*/ put '[LineDown 1, 1]'; %*put '[FormatFont .Bold=0]'; /*Set font format to bold*/ /*Push 'shift + right arrow' select the second and the third column*/ /*Set the first column to 1.18, space between columns to be 0.05*/ str='[TableColumnWidth .ColumnWidth = "'||trim(left(put(&&var&_i_, 4.2)))||'" + Chr$(34), .SpaceBetweenCols = "0.05" + Chr$(34), .RulerStyle = "0"]'; put str; %end; /*Push 'shift + down arrow' select the last column*/ /*Move the cursor up one cell*/ put '[NextCell]'; /*Push 'shift + left arrow' three times: select the firt row*/ %let numcells=%eval(&ncols-1); %do _j_=1 %to &numcells; put '[CharLeft 1, 1]'; %*put '[FormatFont .Bold=0]'; /*set font format to bold*/ %end; put '[TableMergeCells]'; /*Merge cells*/ %if &bookmark ne %then %do; /*Create a bookmark*/ str='[EditBookmark .Name = "'||trim(left("&bookmark"))||'", .SortBy = 0, .Add]'; put str; %end; run; %end; %mend dtable;